﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using Gisena.ServiciosLocales;
using Gisena.ServiciosRemotos;
using AppGISENA.ObjetosNegocio;
using Gisena.Models;
namespace Gisena
{
    public partial class About : Page
    {

        private UnidadProductivaServicios myservicios = new UnidadProductivaServicios();
        //simular conexion a SOFIAPLUS
       // private 
       // private BDSOFIAEntities mysimula = new BDSOFIAEntities();
        protected void Page_Load(object sender, EventArgs e)
        {
            CargarListas();
            //busqueda de producto por nombre o codigo

            // Crear Reader
            JsonReader reader = new JsonReader
            {
                Root = "plants",
                TotalProperty = "total"
            };

            // Create Proxy
            AjaxProxy proxy = new AjaxProxy
            {
                Url = "Plants.ashx",
                Reader = { reader },
                ActionMethods =
                {
                    Read = HttpMethod.POST
                }
            };

            Model model = new Model()
            {
                Fields = {
                new ModelField("Id_Prod"),
                new ModelField("Nomb_Prod"),
                new ModelField("Descrip"),
                new ModelField("Id_Cate", ModelFieldType.Int),
                new ModelField("Id_Tp_Prod", ModelFieldType.Int)
            }
            };

            // Add Proxy and Reader to Store
            Store store = new Store
            {
                //   Proxy = { proxy },
                Model = { model },
                AutoLoad = false
            };

            // Create ComboBox
            ComboBox combobox = new ComboBox
            {
                DisplayField = "Nomb_Prod",
                ValueField = "Id_Prod",
                TypeAhead = false,
                Width = 570,
                PageSize = 10,
                HideBaseTrigger = true,
                ListConfig = new BoundList
                {
                    LoadingText = "Buscando..."
                },
                MinChars = 0,
                TriggerAction = Ext.Net.TriggerAction.Query,
                Store = { store }
            };

            combobox.ListConfig = new BoundList
            {
                ItemTpl = new XTemplate
                {
                    Html = @"
                  <div class=""search-item"">
                     <h3><span>{Id_Prod}</span>{Nomb_Prod}</h3>
                     {Descrip}
                  </div>"
                }
            };



        }

       
       public void CargarListas()
        {
          //  X.Msg.Notify("GISENA", "funciona").Show();
             try
            {
            StTipoUP.DataSource = myservicios.GetTipoUP();
            StTipoUP.DataBind();

            StEstado.DataSource = myservicios.GetEstadoUP();
            StEstado.DataBind();
            }

             catch { }
        }

        /// <summary>
        /// cargar productos al dar click en el panel de producto
        /// </summary>
        [DirectMethod]
        public void ActivarPanelProduc()
        {
            try
            {

                listarGridProductoOfertado(int.Parse(Txt_Cod_Up.Text));
               // X.Msg.Notify("GISENA", "grid cargado").Show();
            }

            catch { }
        }


        [DirectMethod]
        public void ActivarPanelSocios()
        {
            try
            {

                listarGridSocios(Txt_Cod_Up_sof.Text);
                // X.Msg.Notify("GISENA", "grid cargado").Show();
            }

            catch { }
        }


        [DirectMethod]
        public void BorrarProducto(int codproductoofertado)
        {
              try
            {
                //myservicios.DeleteProductoOfertado(codproductoofertado);
            X.Msg.Notify("GISENA", "borrado"+codproductoofertado).Show();
            listarGridProductoOfertado(int.Parse(Txt_Cod_Up.Text));
            }

              catch { }
        }

        /// <summary>
        /// buscar producto por codigo de producto
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>


        protected void Btn_BtnBusqCodigo(object sender, DirectEventArgs e)
        {
            var producto = myservicios.GetProductos();


            var productob = (from mysofia in producto
                             where mysofia.Id_Prod == (int.Parse)(cmbproduct.Text)
                             select mysofia).ToList().SingleOrDefault();

            //producto.ToList();
            if (productob == null)
            {
                X.Msg.Alert("GISENA", "No se encuentra el producto").Show();


            }
            else
            {
                X.Msg.Alert("GISENA", "Producto : "+productob.Nomb_Prod+" Por favor Guardar"  ).Show();

            }

        }
        /// <summary>
        /// buscar la si Up esta registrada en GISENA si no buscar en SOFIAPLUS 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_BuscarUP_Click(object sender, DirectEventArgs e)
        {

            if (Txt_Cod_Up.Text != null)
            {
                try
                {
                    //buscar si la UP esta registrada en GISENA



                    var sofia = myservicios.getUPSofiaById((int.Parse)(Txt_Cod_Up.Text));

                    if (sofia == null)
                    {
                        X.Msg.Notify("GISENA", "No se encuentra la Unidad Productiva, Busque en SOFIA PLUS").Show();
                        ventana_up.Show();
                        //limpiar los controles

                        Txt_Cod_Cent_Form2.Text = " ";
                        Txt_NFicha_UP2.Text = "";
                        Txt_Nomb_UP2.Text = "";

                    }
                    else
                    {
                        Txt_Cod_Cent_Form2.Text = sofia.Cod_Cent_Form.ToString();
                        Txt_NFicha_UP2.Text = sofia.NFicha_UP;
                        Txt_Nomb_UP2.Text = sofia.Nomb_UP;
                        TabPrinc.Disabled = false;



                    }




                }
                catch
                {

                    //falla en la conectividad, o sistema no disponible
                }
            }
            else
            {
                X.Msg.Alert("GISENA", "Digite el codigo de la Unidad Productiva").Show();

            }
        }




        protected void Btn_Buscar_Asesor(object sender, DirectEventArgs e)
        {
            try
            {

                


                X.Msg.Notify("GISENA", "Buscando el asesor de la unidad productiva :").Show();
            }
            catch { }

        }



        protected void Btn_Registrar_Up(object sender, DirectEventArgs e)
        {
            try
            {

                UnidadProductivaSofiaBo myUPsofia = new UnidadProductivaSofiaBo
                {



                    Cod_Cent_Form = int.Parse(Txt_Cod_Cent_Form.Text),
                    NFicha_UP = Txt_NFicha_UP.Text,
                    Cod_UP = long.Parse(Cod_UP.Text),
                    Nomb_UP = Nomb_UP.Text,
                    Fecha_Creac = (DateTime.Parse(DfechaCreacion.Text)),

                    Fecha_Ent_Mat = (DateTime.Parse(DFechaEntregaMat.Text))



                };

               
                myservicios.CreateUPSofia(myUPsofia);
                tabpanelcompos.Enabled= false;

                X.Msg.Notify("GISENA", "UP Registrada en GISENA:").Show();

                ventana_up.Close();
                TabPrinc.Disabled = false;
                




            }
            catch
            {


            }

        }



        protected void Registrar_Asesor(object sender, DirectEventArgs e)
        {
            try
            {

                X.Msg.Notify("GISENA", "Registrando Asesor:").Show();
            }
            catch { }

        }





        protected void Btn_Registrar_caract(object sender, DirectEventArgs e)
        {
            try
            {
                CaracterizacionBo mycaracterizacion = new CaracterizacionBo()
                
                {

                     Id_Tp_UP=int.Parse(Slb_Tp_up.SelectedItem.Value),

                      Descripcion_UP=TxtA_Descripcion_UP.Text,
                     Num_Act_Mat=Txt_Num_Act_Mat.Text,
                     Id_Est_up=int.Parse( Sel_Id_Est_up.SelectedItem.Value),
                     Fech_Reg=DateTime.Now                



                };


                myservicios.CreateUnidadProductiva(mycaracterizacion);


               
                X.Msg.Notify("GISENA", "Caracterizacion UP Guardada").Show();
            }
            catch { }

        }


        private void listarGridProductoOfertado(long codup)
        {
            if (Txt_Cod_Up.Text != null)
            {
                try
                {
                    using (BDGISENAEntities2 GisenaDb = new BDGISENAEntities2())
                    {

                        var myproductoofertado = (from myproducofertado in GisenaDb.Productos_Ofertados
                                                  join productos in GisenaDb.Productos on myproducofertado.Id_Prod equals productos.Id_Prod
                                                  join tipoproducto in GisenaDb.Tipo_Producto on productos.Id_Tp_Prod equals tipoproducto.Id_Tp_Prod
                                                  where myproducofertado.Cod_UP == codup// int.Parse(Txt_Cod_Up.Text)
                                                  select new
                                                  {
                                                      Id_Prod_Ofert = myproducofertado.Id_Prod_Ofert,
                                                      Id_Prod = productos.Id_Prod,
                                                      Nomb_Prod = productos.Nomb_Prod,
                                                      Descrip = productos.Descrip,
                                                      Principal = myproducofertado.Principal,
                                                      Nom_Tp_Prod = tipoproducto.Nombre


                                                  }).ToList();


                        StrGrid_Prod_Ofer.DataSource = myproductoofertado;
                        StrGrid_Prod_Ofer.DataBind();




                    }

                }
                catch { }
            }
            else 
            {

                X.Msg.Alert("GISENA", "Digite un codigo de UP").Show();

            }
                 

        }
        /// <summary>
        /// Evento de boton Registrar producto 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_Registrar_Prod(object sender, DirectEventArgs e)
        {
            try
            {

                if (cmbproduct.Text != null || cmbproduct.SelectedItem.Value != null)
                {

                    //agregar un produto en productos ofertados

                    productosOfertadosBO myproducto = new productosOfertadosBO
                    {
                        Cod_UP = int.Parse(Txt_Cod_Up.Text),
                        Id_Prod = int.Parse(cmbproduct.SelectedItem.Value),
                        Principal = true



                    };
                    myservicios.CreateProductoOfertado(myproducto);
                    X.Msg.Notify("GISENA", "Guardando Producto de la Unidad Productiva").Show();
                    //actualizar el grid

                    //consultar productos de la UP



                }
                else
                {
                    X.Msg.Alert("GISENA", "Seleccione un producto o digite el codigo").Show();

                }

                //LLENAR LOS DEMAS CONTROLES CON LA INFORMACION
                //BDGISENAEntities2 GisenaDb = new BDGISENAEntities2();

            }
            catch { }
            listarGridProductoOfertado(int.Parse(Txt_Cod_Up.Text));

        }

        protected void Btn_Buscar_SocioUp(object sender, DirectEventArgs e)
        {
            try
            {

                X.Msg.Notify("GISENA", "Buscando Socio de la Unidad Productiva").Show();
            }
            catch { }

        }




        /// <summary>
        /// BUSCAR EN sofiaplus
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
      //  [DirectMethod]
        protected void Btn_BuscarUP_Sofia(object sender, DirectEventArgs e)
        {
            if (Txt_Cod_Up_sof.Text != null)
            {
                try
                {
                    //buscar up en Sofia
                     
                    var mysofiap =myservicios.getUPSofiaRemotaById((Txt_Cod_Up_sof.Text));
                  var mysofia=  mysofiap.FirstOrDefault();
                    //Asignamos a los controles los valores obtenidos
                    Txt_Cod_Reg.Text = mysofia.REG_ID.ToString();
                    Txt_Nombre_Reg.Text = mysofia.REGIONAL.ToString();
                    Txt_Cod_Cent_Form.Text = mysofia.CTR_ID.ToString();
                    Txt_Nombre_Cen_For.Text = mysofia.CENTRO.ToString();
                    Txt_NFicha_UP.Text = mysofia.FICHA.ToString();
                    Cod_UP.Text = mysofia.COD_UNIDAD_PROD.ToString();
                    Nomb_UP.Text = mysofia.NOMBRE_UP.ToString();
                    DfechaCreacion.Text = mysofia.FECHA_CREA_UP.Value.ToString();
                    DFechaEntregaMat.Text = mysofia.FECHA_ENTREGA_MATERIALES.Value.ToString();
                   

                  //  listarGridSocios(Txt_Cod_Up_sof.Text);
                    using (BDSOFIAEntities SofiaBD = new BDSOFIAEntities())
                    {


                        var myaprensofia = (from myAprendizsofia in SofiaBD.SOFIA
                                            where myAprendizsofia.COD_UNIDAD_PROD == Txt_Cod_Up_sof.Text
                                            select myAprendizsofia).ToList();
                                            //select new
                                            //{
                                            //    Ident = myAprendizsofia.DOC_ID,
                                            //    Nombre = myAprendizsofia.NOMBRE_APRENDIZ,
                                            //    apellido = myAprendizsofia.APELLIDOS_APRENDIZ,
                                            //    tipodocumento = myAprendizsofia.TIPO_DOCUMENTO,
                                            //    ficha = myAprendizsofia.FICHA,
                                            //    tipoblacion = myAprendizsofia.TIPO_POBLACION

                                            //}).ToList();

                        Ste_Socio.DataSource = myaprensofia;
                        Ste_Socio.DataBind();
                        X.Msg.Notify("GISENA", "Buscando  Unidad Productiva").Show();
                        tabpanelcompos.Disabled = false;
                    }

                }
                catch
                {
                    X.Msg.Notify("GISENA", "Unidad Productiva no Encontrada").Show();

                }
            }

            else
            {
                X.Msg.Alert("GISENA", "Digite el codigo de Unida Productiva").Show();

            }

        }


        private void listarGridSocios(string codup){

            if (codup != null)
            {
                try
                {
                    //cargar el datagrid
                    using (BDSOFIAEntities SofiaBD = new BDSOFIAEntities())
                    {


                        var myaprensofia = (from myAprendizsofia in SofiaBD.SOFIA
                                            where myAprendizsofia.COD_UNIDAD_PROD == codup
                                            select new
                                            {
                                                Ident = myAprendizsofia.DOC_ID,
                                                Nombre = myAprendizsofia.NOMBRE_APRENDIZ,
                                                apellido = myAprendizsofia.APELLIDOS_APRENDIZ,
                                                tipodocumento = myAprendizsofia.TIPO_DOCUMENTO,
                                                ficha = myAprendizsofia.FICHA,
                                                tipoblacion = myAprendizsofia.TIPO_POBLACION

                                            }).ToList();

                        StrlistaSocios.DataSource = myaprensofia;
                        StrlistaSocios.DataBind();
                        X.Msg.Alert("Gisena", "hola");
                        // myaprensofia.ForEach(n=>)

                        // return (Cast<myaprensofia>);
                    }
                }
                catch
                {


                }
            }
            else
            {
                X.Msg.Alert("GISENA", "Digite el codigo de Unida Productiva").Show();

            }

        }


        private void listarGridSociosByIdentificacion(string cedula)
        {

            if (cedula != null)
            {
                try
                {
                    //cargar el datagrid
                    using (BDSOFIAEntities SofiaBD = new BDSOFIAEntities())
                    {


                        var myaprensofia = (from myAprendizsofia in SofiaBD.SOFIA
                                            where myAprendizsofia.DOC_ID == cedula
                                            select new
                                            {
                                                Ident = myAprendizsofia.DOC_ID,
                                                Nombre = myAprendizsofia.NOMBRE_APRENDIZ,
                                                apellido = myAprendizsofia.APELLIDOS_APRENDIZ,
                                                tipodocumento = myAprendizsofia.TIPO_DOCUMENTO,
                                                ficha = myAprendizsofia.FICHA,
                                                tipoblacion = myAprendizsofia.TIPO_POBLACION

                                            }).ToList();

                        StrlistaSocios.DataSource = myaprensofia;
                        StrlistaSocios.DataBind();
                       // X.Msg.Alert("Gisena", "hola");
                        // myaprensofia.ForEach(n=>)

                        // return (Cast<myaprensofia>);
                    }
                }
                catch
                {


                }
            }
            else
            {
                X.Msg.Alert("GISENA", "Digite el codigo de Unida Productiva").Show();

            }

        }

        private void listarInstructores(string codup)
        {
            if (Txt_Cod_Up_sof.Text != null)
            {
                try
                {

                    using (BDSOFIAEntities SofiaBD = new BDSOFIAEntities())
                    {

                        var myinstructor = (from myinstructorsofia in SofiaBD.SOFIA
                                            where myinstructorsofia.COD_UNIDAD_PROD == Txt_Cod_Up_sof.Text
                                            select new
                                            {
                                                nombrecompletolider = myinstructorsofia.LIDER,

                                                tipodocumentolider = myinstructorsofia.TIPO_DOCUMENTO,
                                                documentolider = myinstructorsofia.NUM_DOC_LIDER

                                            }).ToList();

                        //llenar datagrid instrucotres o asesores
                    }
                }
                catch
                {


                }
                
            }

             else 
            {

                X.Msg.Alert("GISENA", "Digite un codigo de UP").Show();

            }
        
        }

        public static T Cast<T>(object obj, T type)
        {
            return (T)obj;
        }
      //  [DirectMethod]


        protected void Cell_Click(object sender, DirectEventArgs e)
        {
            try
            {

                CellSelectionModel sm = this.GridAsesores.GetSelectionModel() as CellSelectionModel;

                sm.SelectedCell.ColIndex = 1;
                sm.SelectedCell.RowIndex = sm.SelectedCell.RowIndex;
                Txt_Ident_Socio.Text = sm.SelectedCell.Value.ToString();
                // this.Label1.Html = string.Format("RecordID: {0}<br />Name: {1}<br />Value: {2}<br />Row: {3}<br />Column: {4}", sm.SelectedCell.RecordID, sm.SelectedCell.Name, sm.SelectedCell.Value, sm.SelectedCell.RowIndex.ToString(), sm.SelectedCell.ColIndex.ToString());
            }
            catch {

                Txt_Ident_Socio.Text = "";
            
            }
        }


        protected void Registrar_Socios(object sender, DirectEventArgs e)
        {
            if (Txt_Ident_Socio.Text != null)
            {
              


                        try
                        {
                            //cargar el datagrid
                            using (BDSOFIAEntities SofiaBD = new BDSOFIAEntities())
                            {


                                var myaprensofia = (from myAprendizsofia in SofiaBD.SOFIA
                                                    where myAprendizsofia.DOC_ID == Txt_Ident_Socio.Text
                                                    select new
                                                    {
                                                        Ident = myAprendizsofia.DOC_ID,
                                                        Nombre = myAprendizsofia.NOMBRE_APRENDIZ,
                                                        apellido = myAprendizsofia.APELLIDOS_APRENDIZ,
                                                        tipodocumento = myAprendizsofia.TIPO_DOCUMENTO,
                                                        ficha = myAprendizsofia.FICHA,
                                                        tipoblacion = myAprendizsofia.TIPO_POBLACION

                                                    }).ToList();
                                //guardar socio en GISENA

                                var socioaprendiz = myaprensofia.FirstOrDefault();

                                socioBo mysocio = new socioBo
                                {

                                    Identificacion =int.Parse( socioaprendiz.Ident),
                                     Nombre=socioaprendiz.Nombre,
                                     Apellidos=socioaprendiz.apellido,
                                      Tp_Doc=socioaprendiz.tipodocumento,
                                       
                                      Tipo_Poblacion=socioaprendiz.tipodocumento
                                      


                                };
                                myservicios.CreateSocio(mysocio);

                                X.Msg.Alert("GISENA", "Socio cargado en Gisena").Show();
                                Vincular_Socio myvinculasocio = new Vincular_Socio
                                {
                                     Cod_UP= int.Parse( Txt_Cod_Up_sof.Text),
                                      Ident_Soc=int.Parse( Txt_Ident_Asesor.Text)


                                };

                                using (BDGISENAEntities2 gisenaContext = new BDGISENAEntities2())
                                {

                                    gisenaContext.Vincular_Socio.Add(myvinculasocio);
                                    gisenaContext.SaveChanges();
                                    X.Msg.Alert("GISENA", "Socio vinculado a Unidad Productiva").Show();

                                }
                                //StrlistaSocios.DataSource = myaprensofia;
                                //StrlistaSocios.DataBind();
                                // X.Msg.Alert("Gisena", "hola");
                                // myaprensofia.ForEach(n=>)

                                // return (Cast<myaprensofia>);
                            }
                        }
                        catch
                        {


                        }
                    }                                    
               
               
            
            else
            {
                X.Msg.Alert("GISENA", "Seleccione un Socio a vincular").Show();

            }




        }

        protected void Btn_Actualizar_Rol(object sender, DirectEventArgs e)
        {

            X.Msg.Alert("GISENA", "sdfsfs").Show();

        }





    }
}